/*
启动线程
*/
#include <thread>  
#include <iostream>

void do_something(int& i)
{
    ++i;
}

struct func
{
    int& i;

    func(int& i_):i(i_){}

    void operator()()
    {
        for(unsigned j=0;j<1000000;++j)
        {
            do_something(i);  //潜在访问隐患，悬空指针
            std::cout << i << std::endl;  //没有输出，
        }
    }
};


void oops()
{
    int some_local_state=0;
    func my_func(some_local_state);
    std::thread my_thread(my_func);
    my_thread.detach();  // 不等带线程结束，
}                       // 新的线程可能在后台继续运行，

int main()
{
    oops();
}
